Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Commit 9b792862b9f8669bba5c6968d56eeccb00290d48


Parents : 68349aa
Author : Mark Qvist <mark@unsigned.io>
Date : 2025-01-16T11:00:39+01:00

Improved T-Echo e-ink sleep

Changes

2 files changed, 15 insertions(+), 7 deletions(-)

M Display.h +11 -5

Diff

diff --git a/Display.h b/Display.h
index fbd5bab..ccb20f7 100644
--- a/Display.h
+++ b/Display.h
@@ -201,7 +201,7 @@ uint8_t display_contrast = 0x00;
void set_contrast(ST7789Spi *display, uint8_t value) { }
#elif BOARD_MODEL == BOARD_TECHO
void set_contrast(void *display, uint8_t value) {
- if (value == 0) { digitalWrite(pin_backlight, LOW); }
+ if (value == 0) { analogWrite(pin_backlight, 0); }
else { analogWrite(pin_backlight, value); }
}
#elif BOARD_MODEL == BOARD_TDECK
@@ -274,7 +274,7 @@ bool display_init() {
display.epd2.setBusyCallback(busyCallback);
#if HAS_BACKLIGHT
pinMode(pin_backlight, OUTPUT);
- digitalWrite(pin_backlight, LOW);
+ analogWrite(pin_backlight, 0);
#endif
#elif BOARD_MODEL == BOARD_TBEAM_S_V1
Wire.begin(SDA_OLED, SCL_OLED);
@@ -414,7 +414,7 @@ bool display_init() {
#if BOARD_MODEL == BOARD_TECHO
#if HAS_BACKLIGHT
- if (display_intensity == 0) { digitalWrite(pin_backlight, LOW); }
+ if (display_intensity == 0) { analogWrite(pin_backlight, 0); }
else { analogWrite(pin_backlight, display_intensity); }
#endif
#endif
@@ -906,10 +906,16 @@ void display_recondition() {
bool epd_blanked = false;
#if BOARD_MODEL == BOARD_TECHO
- void epd_blank() {
+ void epd_blank(bool full_update = true) {
display.setFullWindow();
display.fillScreen(SSD1306_WHITE);
- display.display(true);
+ display.display(full_update);
+ }
+
+ void epd_black(bool full_update = true) {
+ display.setFullWindow();
+ display.fillScreen(SSD1306_BLACK);
+ display.display(full_update);
}
#endif

diff --git a/RNode_Firmware.ino b/RNode_Firmware.ino
index 3132d4f..8d39fd1 100644
--- a/RNode_Firmware.ino
+++ b/RNode_Firmware.ino
@@ -1631,8 +1631,10 @@ void sleep_now() {
digitalWrite(PIN_T114_TFT_BLGT, HIGH);
digitalWrite(PIN_T114_TFT_EN, HIGH);
#elif BOARD_MODEL == BOARD_TECHO
- digitalWrite(pin_backlight, LOW);
- epd_blank();
+ for (uint8_t i = display_intensity; i > 0; i--) { analogWrite(pin_backlight, i-1); delay(1); }
+ epd_black(true); delay(300); epd_black(true);
+ analogWrite(PIN_VEXT_EN, 0);
+ delay(100);
#endif
sd_power_gpregret_set(0, 0x6d);
nrf_gpio_cfg_sense_input(pin_btn_usr1, NRF_GPIO_PIN_PULLUP, NRF_GPIO_PIN_SENSE_LOW);


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────